﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebShopAPI.Models;//
using DAL;
using Models;
namespace WebShopAPI.Controllers
{
    public class InProductController : ApiController
    {
        sp_goodsServcie goodServcie = new sp_goodsServcie();
        sp_ProductServcie productServcie = new sp_ProductServcie();
        InproService inproService = new InproService();

        #region 1 进入进货列，需要展示的数据，在后台处理
        public ResponData Get(int goodid)
        {
            //处理前台需要数据
            //1.商品信息
            sp_goods goodObj= goodServcie.GetOne(goodid);//获取商品信息
            //2.需要获取该商品的货品
            List<sp_Product> spProList= productServcie.GetAllProductByGoods(goodid);

            //响应的数据
            ResponData rd = new ResponData();
            rd.data = new
            {
                GoodName = goodObj.goods_name, //商品名
                InProZDBH=DateTime.Now.ToString("yyyyMMddHHmmss")+Guid.NewGuid().ToString().Substring(0,10),// 单据编号，可以用流水号，这里用唯一保证唯一
                ProList = spProList.Select(p => new
                {
                    ProId = p.Id, //产品编号
                    GoodId = p.Goods_id,//商品编号
                    GoodName = p.Good_name,//商品名
                    GoodProName = p.Good_SKUName, //货品名
                    GoodAttr = p.Good_SKU_Attr, //参数组合名
                    ProJG = 0, //价格
                    ProSL=0,  //数量
                    XJ=0,
                    bz=""
                })
            
            };
            rd.meta.msg = "获取货品信息成功";
            rd.meta.status = 200;
            return rd;
        }
        #endregion

        #region 2 进货确定操作,接收自定义的类型数据，功能完成放到数据访问层完成，把实体类定义在Models中，实体类放哪是一样的
        public ResponData Post(AddInProduct addProduct)
        {
            //功能实现，在数据访问层完成，复杂业务处理，这里只检查获取前端来的数据
            bool f= inproService.AddInProduct(addProduct);
            if (f == true)
            {
                /////定义返回数据//////////
                ResponData rd = new ResponData();
                rd.meta.msg = "商品入库成功";
                rd.meta.status = 200;
                return rd;
            }
            else 
            {
                /////定义返回数据//////////
                ResponData rd = new ResponData();
                rd.meta.msg = "商品入库失败";
                rd.meta.status = 201;
                return rd;
            }
          
        }
        #endregion

        #region 3 分页展示进货列表数据,并可以通过展开查看进货详细
        public ResponData Get(string query,int pagenum = 1, int pagesize=10)
        {
            //调用分页查询，再封装成返回数据
            int Total = 0;
            List<InProTab> proList=inproService.GetAll(query,ref Total,pagenum, pagesize);
            
            ResponData rd = new ResponData();
            rd.data = new
            {
                prolist = proList.Select(p => new
                {
                   // ProObj = p, //主表对象
                    p.Id,
                    p.GoodName,
                    p.InProBh,
                    p.InProZDBH,
                    p.ProJJSL,
                    p.ProJJZG,
                    p.JHQTFY,
                    JHRQ=p.JHRQ.ToString("yyyy年MM月dd日"),
                    p.bz,
                    ProInfoList = inproService.GetInProInfoByInProZDBH(p.InProZDBH)  //从表集合
                }) ,
                total=Total
            };
           
            rd.meta.msg = "获取进货列表成功";
            rd.meta.status = 200;
            return rd;
        }
        #endregion
    }
}
